<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<script>
			//229971308 龚雅丹第一个
			 let a1,b1,c1 = [1,2,3, ];
			 console.log(a1,b1,c1);//
			
			 let [a2,b2,c2] = [1,2,3, ];
			 console.log(a2,b2,c2);
			
			let [a3,b3,c3] = [1, ,3, ];
			 console.log(a3,b3,c3);
			
			let[a4,b4] = [1];
			 console.log(a4,b4);
			
			 let {y:a5,b5} = {x:1,y:2};
			 console.log(a5,b5);
			
			 let{a6,b6} = 123;
			 console.log(a6,b6);//解构赋值只能应用于可迭代的对象（如数组）或具有属性的对象。数字123既不是一个数组，也不是一个对象，因此不能对它进行解构赋值。
			
			//229971308 龚雅丹第二个
			 let set = new Set();
			 set.add(1);
			 set.add(2);
			 set.add(3);
			 set.delete(2);
			
			 let i = set.values();
			 console.log(i.next());
			 console.log(i.next());
		    console.log(i.next());
			
			//229971308 龚雅丹 第三个
			 let map = new Map();
			 map.set(1,"a");
			 map.set(2,"b");
			 map.set(3,"c");
			 map.set(4,"d");
			
			 for(let i=1;i <= map.size;i++){
			 	console.log(map.get(i));
			 }
			
			 map.forEach(function(value,key){
			 	console.log(value);
			 });
			
			for(let v of map.values()){
			 	console.log(v);
			 }
			 for(var prop in map){
			 	console.log(prop);
			 }//最没有找到任何可枚举的键值对属性来输出。
			
		   //229971308 龚雅丹 第四个
			
			 let arr1 = [1,2,3];
			
			 let arr2 = arr1;
			// console.log(arr1==arr2);
			
			 let arr3 = [...arr1];
			 console.log(arr1==arr3);
			 //原因：== 操作符用于比较两个变量的值是否相等，let arr2 = arr1; 时，你实际上只是创建了一个新的引用 arr2，它指向与 arr1 相同的数组对象,返回 true;执行 let arr3 = [...arr1]; 时，用了扩展运算符 ... 来创建 arr1 的一个新副本，并将这个新数组赋值给 arr3,返回false
			
			//229971308 龚雅丹 第五个
			 let arr4 = [1,2,3];
			 arr4.forEach(function(v,k){
			 	console.log(v);
			 })
			//改写
			 let arr4 = [1, 2, 3];  
			 arr4.forEach((v, k) => console.log(v));

            //229971308 龚雅丹第六个
			 Array.of(1,2,3).filter(i => i >1).forEach(i => console.log(i));
			 let fib = n => n > 1 ?fib(n-1) + fib(n-2) : n;
			//创建一个包含数字1、2、3的数组，然后筛选出数组中大于1的元素（即2和3）；
			//用于计算斐波那契数列中的第n项。这个函数使用递归的方式来实现：如果n大于1，则递归地计算fib(n-1)和fib(n-2)并将它们的和作为结果返回；如果n不大于1，则直接返回n；
			
			 //229971308 龚雅丹 第七个
			 class Animal {  
			     constructor(name) {  
			         this.name = name;  
			     }  
			   
			     shout() {  
			         console.log(`${this.name} is shouting!`);  
			     }  
			 }  
			 // 派生类 Dog  
			 class Dog extends Animal {  
			     constructor(name, age) {  
			         super(name);  
			         this.age = age;  
			     }  
			     eat() {  
			         console.log(`${this.name} is eating.`);  
			     }  
			 }  
			 let dog = new Dog('小李', 8);  
			 console.log(dog.name); 
			 console.log(dog.age); 
			 dog.shout(); 
			 dog.eat(); 
			</script>
	</body>
</html>
